在資料儲存時,最最最最簡單的方法就是存成一個文字檔,但這僅僅是存下文字,無法將資料分類、加入子項目,後續在做讀取資料時也不易處理。這個時候,我們便需要用到資料庫。現在常用的資料庫有PostgreSQL, MonggoDB, MySQL, Oracle......多到說也說不完,今天,筆者將介紹SQLite,一個適合與Flutter並用的資料庫。
在SQLite官方網站的介紹中,它是一個輕巧、快速、獨立、具高依賴性、功能完整的SQL資料庫引擎。
SQL, Structured Query Language結構式查詢語言是一個程式語言,專門用於儲存和處理關聯性資料庫(relational database),並將資料以表格的方式儲存,行與列表示資料的屬性與和其他資料的相關性。另外,SQL也可以用於維護和優化資料庫的效能。
有一個關於SQL許多人都會討論的一個點,就是「如何唸SQL」?有的人唸Ess-Que-El,有的唸Sequel,有的唸Squirrel或squeal???筆者覺得這挺有趣的,它不像python,java這種一看就知道怎麼唸,所以有各種不同神奇的唸法。
reddit - How do you pronounce SQL?
好了!打岔就到這裡結束,接下來回到SQLite。
在使用之前,我們當然需要先將sqlite下載到我們的電腦上。可以選擇到官方下載頁面,或者是使用package manager下載。
筆者的系統是Linux Mint,是Ubuntu底下的一枝,因此下載檔案時輸入以下便能安裝好,MacOS可使用brew,Windows可使用winget:
sudo apt install sqlite
下載並安裝完成後在我們的terminal輸入sqlite3,便能夠建立一個新的SQLite資料庫檔案。
在sqlite中,所有「非編輯資料庫內容」的指令皆由.
為開頭,輸入.help
可以看到一大串的指令一覽。以下為幾個最常用的指令:
command | usage |
---|---|
.read FILE | 讀取FILE |
.output ?FILE? | 輸出至FILE,無指定FILE,則為stdout |
.open ?OPTIONS? ?FILE? | 關閉現在的檔案並開啟FILE |
.dbinfo ?DB? | 顯示資料庫的資料 |
.tables ?TABLE? | 列出與TABLE相似pattern的表格的名稱 |
.schema | 列出表格的資料 |
.recover | 盡可能復原受損的資料庫 |
.headers on/off | 顯示/隱藏表格的抬頭 |
.exit / .quit | 退出sqlite |
flutter有個官方建立、專門用於SQLite資料庫處理的package:sqflite
,我們只需要在pubspec.yaml
的dependencies中加入sqflite,我們的程式便可以是用他的函式庫了。
dependencies:
sqflite: ^2.3.3
因為有了sqflite的函式庫,我們可以暫時不用太深入SQL的語法,只要知道那些函式如何使用就可以了。
要記得在使用的檔案import sqflite才可以用其內容物喔!
import 'package:sqflite/sqflite.dart';
以下筆者將整理幾個sqflite常用的函式,詳細說明可點選此連結。
method | usage |
---|---|
getDatabasesPath() |
設定資料庫所在的路徑,與join() 並用 |
openDatabase() |
開啟資料庫 |
db.execute("") |
將引號內的內容以SQL的程式碼執行 |
db.insert() |
加入新資料 |
db.query() |
將資料庫以List<Map>的形式回傳 |
db.update() |
更新資料庫內已有的資料 |
db.delete() |
刪除資料庫內已有的資料 |
備註:final db = await database;
謝謝看到這裡的你,明天將會把這篇學到的內容實做到Schedrag專案中。
有任何問題或是想法都歡迎留言或email,我們下篇見~
email: nnyjan02426@gmail.com
Schedrag: nnyjan02426/Schedrag